using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using database;
using objetos;

namespace dados
{
	#region TB_CADASTRO_FISICA
	/// <summary>
	/// This object represents the properties and methods of a TB_CADASTRO_FISICA.
	/// </summary>
	public class DAL_TB_CADASTRO_FISICA
	{		
	
		/// <summary>
		/// Incluir via aplicacao
		/// </summary>	
		public void Incluir(OBJ_TB_CADASTRO_FISICA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				List<string> lista = new List<string>();

                db.CreateParameter("@id_cadastro", SqlDbType.Int, obj.id_cadastro);
                lista.Add("@id_cadastro");				
				db.CreateParameter("@cpf", SqlDbType.VarChar, obj.cpf);				
				lista.Add("@cpf");				
				db.CreateParameter("@registro_geral", SqlDbType.VarChar, obj.registro_geral);				
				lista.Add("@registro_geral");				
				db.CreateParameter("@orgao_emissor", SqlDbType.VarChar, obj.orgao_emissor);				
				lista.Add("@orgao_emissor");				
				db.CreateParameter("@dt_emissao", SqlDbType.DateTime, obj.dt_emissao);				
				lista.Add("@dt_emissao");				
				db.CreateParameter("@titulo_eleitor", SqlDbType.VarChar, obj.titulo_eleitor);				
				lista.Add("@titulo_eleitor");				
				db.CreateParameter("@id_departamento", SqlDbType.Int, obj.id_departamento);				
				lista.Add("@id_departamento");				
				db.CreateParameter("@id_cargo", SqlDbType.Int, obj.id_cargo);				
				lista.Add("@id_cargo");				
				db.CreateParameter("@dt_nascimento", SqlDbType.DateTime, obj.dt_nascimento);				
				lista.Add("@dt_nascimento");				
				db.CreateParameter("@sexo", SqlDbType.Char, obj.sexo);				
				lista.Add("@sexo");				
				db.CreateParameter("@id_estado_civil", SqlDbType.Int, obj.id_estado_civil);				
				lista.Add("@id_estado_civil");				
				db.CreateParameter("@nacionalidade", SqlDbType.VarChar, obj.nacionalidade);				
				lista.Add("@nacionalidade");				
				db.CreateParameter("@naturalidade", SqlDbType.VarChar, obj.naturalidade);				
				lista.Add("@naturalidade");				
				db.CreateParameter("@pai", SqlDbType.VarChar, obj.pai);				
				lista.Add("@pai");				
				db.CreateParameter("@mae", SqlDbType.VarChar, obj.mae);				
				lista.Add("@mae");				
				db.CreateParameter("@dt_admissao", SqlDbType.DateTime, obj.dt_admissao);				
				lista.Add("@dt_admissao");				
				db.CreateParameter("@dt_demissao", SqlDbType.DateTime, obj.dt_demissao);				
				lista.Add("@dt_demissao");				
	
				string query = String.Format("Insert Into tb_cadastro_fisica ({0}) Values ({1}); SELECT SCOPE_IDENTITY()",  string.Join(",",lista.ToArray()).ToString().Replace("@", ""), string.Join(",",lista.ToArray()).ToString());
				db.ExecuteQuery(query);
								
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
		
		/// <summary>
		/// Update via aplicacao
		/// </summary>			
		public void Alterar(OBJ_TB_CADASTRO_FISICA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				List<string> lista = new List<string>();
	
				db.CreateParameter("@id_cadastro", SqlDbType.Int, obj.id_cadastro);
				
	
				db.CreateParameter("@cpf", SqlDbType.VarChar, obj.cpf);
				lista.Add("cpf = @cpf");
				db.CreateParameter("@registro_geral", SqlDbType.VarChar, obj.registro_geral);
				lista.Add("registro_geral = @registro_geral");
				db.CreateParameter("@orgao_emissor", SqlDbType.VarChar, obj.orgao_emissor);
				lista.Add("orgao_emissor = @orgao_emissor");
				db.CreateParameter("@dt_emissao", SqlDbType.DateTime, obj.dt_emissao);
				lista.Add("dt_emissao = @dt_emissao");
				db.CreateParameter("@titulo_eleitor", SqlDbType.VarChar, obj.titulo_eleitor);
				lista.Add("titulo_eleitor = @titulo_eleitor");
				db.CreateParameter("@id_departamento", SqlDbType.Int, obj.id_departamento);
				lista.Add("id_departamento = @id_departamento");
				db.CreateParameter("@id_cargo", SqlDbType.Int, obj.id_cargo);
				lista.Add("id_cargo = @id_cargo");
				db.CreateParameter("@dt_nascimento", SqlDbType.DateTime, obj.dt_nascimento);
				lista.Add("dt_nascimento = @dt_nascimento");
				db.CreateParameter("@sexo", SqlDbType.Char, obj.sexo);
				lista.Add("sexo = @sexo");
				db.CreateParameter("@id_estado_civil", SqlDbType.Int, obj.id_estado_civil);
				lista.Add("id_estado_civil = @id_estado_civil");
				db.CreateParameter("@nacionalidade", SqlDbType.VarChar, obj.nacionalidade);
				lista.Add("nacionalidade = @nacionalidade");
				db.CreateParameter("@naturalidade", SqlDbType.VarChar, obj.naturalidade);
				lista.Add("naturalidade = @naturalidade");
				db.CreateParameter("@pai", SqlDbType.VarChar, obj.pai);
				lista.Add("pai = @pai");
				db.CreateParameter("@mae", SqlDbType.VarChar, obj.mae);
				lista.Add("mae = @mae");
				db.CreateParameter("@dt_admissao", SqlDbType.DateTime, obj.dt_admissao);
				lista.Add("dt_admissao = @dt_admissao");
				db.CreateParameter("@dt_demissao", SqlDbType.DateTime, obj.dt_demissao);
				lista.Add("dt_demissao = @dt_demissao");
	
				string query = String.Format("Update TB_CADASTRO_FISICA Set {0} Where id_cadastro = @id_cadastro", string.Join(",",lista.ToArray()).ToString());
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}	
		
		/// <summary>
		/// Delete viaaplicacao
		/// </summary>	
		public void Excluir(OBJ_TB_CADASTRO_FISICA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				StringBuilder queryParameters = new StringBuilder();
				db.CreateParameter("@id_cadastro", SqlDbType.Int, obj.id_cadastro);
		
				string query = "Delete tb_cadastro_fisica Where id_cadastro = @id_cadastro";			
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
	
	
		/// <summary>
		/// Lista objeto
		/// </summary>						
		public List<OBJ_TB_CADASTRO_FISICA> SelecionarLista()
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				List<OBJ_TB_CADASTRO_FISICA> lista = new List<OBJ_TB_CADASTRO_FISICA>();
				OBJ_TB_CADASTRO_FISICA obj = null;
				DataTable dt = new DataTable();
				DataSet ds = new DataSet();
				StringBuilder sb = new StringBuilder();
				sb.Append("Select * from  TB_CADASTRO_FISICA ");
        
	            ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
					{											
						obj = new OBJ_TB_CADASTRO_FISICA();
						Set(obj,dr);
						lista.Add(obj);
		
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}
		
		/// <summary>
		/// Set Objeto
		/// </summary>	
		private void Set(OBJ_TB_CADASTRO_FISICA obj,DataRow dr)
		{
			obj.id_cadastro = Convert.ToInt32(dr["id_cadastro"]);						
			obj.cpf = dr["cpf"] == DBNull.Value ?  string.Empty : dr["cpf"].ToString() ;
			obj.registro_geral = dr["registro_geral"] == DBNull.Value ?  string.Empty : dr["registro_geral"].ToString() ;
			obj.orgao_emissor = dr["orgao_emissor"] == DBNull.Value ?  string.Empty : dr["orgao_emissor"].ToString() ;
			obj.dt_emissao = dr["dt_emissao"] == DBNull.Value ?  (DateTime?)null :  Convert.ToDateTime(dr["dt_emissao"].ToString()) ;						
			obj.titulo_eleitor = dr["titulo_eleitor"] == DBNull.Value ?  string.Empty : dr["titulo_eleitor"].ToString() ;
			obj.id_departamento = Convert.ToInt32(dr["id_departamento"].ToString()) ;	
			obj.id_cargo = Convert.ToInt32(dr["id_cargo"].ToString()) ;	
			obj.dt_nascimento = dr["dt_nascimento"] == DBNull.Value ?  (DateTime?)null :  Convert.ToDateTime(dr["dt_nascimento"].ToString()) ;						
			obj.sexo = dr["sexo"] == DBNull.Value ?  string.Empty : dr["sexo"].ToString() ;
			obj.id_estado_civil = Convert.ToInt32(dr["id_estado_civil"].ToString()) ;	
			obj.nacionalidade = dr["nacionalidade"] == DBNull.Value ?  string.Empty : dr["nacionalidade"].ToString() ;
			obj.naturalidade = dr["naturalidade"] == DBNull.Value ?  string.Empty : dr["naturalidade"].ToString() ;
			obj.pai = dr["pai"] == DBNull.Value ?  string.Empty : dr["pai"].ToString() ;
			obj.mae = dr["mae"] == DBNull.Value ?  string.Empty : dr["mae"].ToString() ;
			obj.dt_admissao = dr["dt_admissao"] == DBNull.Value ?  (DateTime?)null :  Convert.ToDateTime(dr["dt_admissao"].ToString()) ;						
			obj.dt_demissao = dr["dt_demissao"] == DBNull.Value ?  (DateTime?)null :  Convert.ToDateTime(dr["dt_demissao"].ToString()) ;						
			
		}						
				
		/// <summary>
		/// Selecionar Objeto Por ID
		/// </summary>	
		public OBJ_TB_CADASTRO_FISICA SelecionarObjetoPorId(int id)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_CADASTRO_FISICA obj = new OBJ_TB_CADASTRO_FISICA();
				DataSet ds = new DataSet();				
				DataTable dt = new DataTable();
				db.CreateParameter("@id_cadastro", SqlDbType.Int, id);
				ds = db.ExecuteQuery("SELECT * FROM tb_cadastro_fisica  Where id_cadastro = @id_cadastro");				
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
                	{
						obj = new OBJ_TB_CADASTRO_FISICA();
						Set(obj,dr);																			
					}
					return obj;
					
				}
				else
				{
					return null;	
				}			
			}
			catch (Exception)
       		{
            	throw;
        	}
			
		}
					
		
		
		/// <summary>
		/// Lista objeto Parametro Where OrderBy
		/// </summary>							
		public List<OBJ_TB_CADASTRO_FISICA> SelecionarLista(String Where, String OrderBy)
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_CADASTRO_FISICA obj = null;
				DataSet ds = new DataSet();
				DataTable dt = new DataTable();
				List<OBJ_TB_CADASTRO_FISICA> lista = new List<OBJ_TB_CADASTRO_FISICA>();
				
				StringBuilder sb = new StringBuilder();
				db.CreateParameter("@Where",SqlDbType.VarChar, Where );
				db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy );				
				
				sb.Append("SELECT * ");
				sb.Append(" FROM TB_CADASTRO_FISICA");
				if(Where != string.Empty)				
				sb.Append(string.Format(" Where {0} ",Where));
				if(OrderBy != string.Empty)
				sb.Append(string.Format(" Order by {0}",OrderBy));
				
				ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					foreach (DataRow dr in dt.Rows)
					{						
						obj = new OBJ_TB_CADASTRO_FISICA();
						Set(obj,dr);			
						lista.Add(obj);
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}

		
		public DataSet Selecionar(String Where, String OrderBy, int PageIndex, int PageSize )
		{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				
				StringBuilder sb = new StringBuilder();
                PageIndex = PageSize * PageIndex;
                PageSize = PageIndex + PageSize;
				
		      if (OrderBy == string.Empty) OrderBy = "id_cadastro";

            	sb.Append("SELECT * FROM ");
            	sb.Append(string.Format(" (SELECT ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber,",OrderBy));
           		sb.Append(" * FROM   tb_cadastro_fisica ");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				sb.Append(" ) query  ");
				sb.Append(string.Format(" WHERE RowNumber BETWEEN {0} + 1 and {1}; ",PageIndex,PageSize));

            	sb.Append("SELECT count(*) FROM tb_cadastro_fisica");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				ds = db.ExecuteQuery(sb.ToString());
				
				if (!db.DataSetIsEmpty(ds))
            	{
                publico.PUB_PAGINACAO.CalcularTotalDePaginas(Convert.ToDecimal(ds.Tables[1].Rows[0][0].ToString()));
            	}

				
            	return ds;
								
		}
				
								
		public DataSet Selecionar(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append("Select * from  TB_CADASTRO_FISICA ");
            if (Where != string.Empty)
            {
                db.CreateParameter("@Where", SqlDbType.VarChar, Where);
                sb.Append(string.Format(" Where  {0}",Where));
            }

            if (OrderBy != string.Empty)
            {
                db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy);
                sb.Append(" Order By @OrderBy");
            }

            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		public DataSet Selecionar()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append("Select * from  TB_CADASTRO_FISICA Order By id");            
            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		
		public DataSet ListaCampos()
        {

            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT TABLE_NAME, ORDINAL_POSITION, ");
            sb.Append(" COLUMN_NAME, DATA_TYPE, IS_NULLABLE ");
            sb.Append(" FROM INFORMATION_SCHEMA.COLUMNS");
            sb.Append(" WHERE TABLE_NAME = 'tb_cadastro_fisica'");
            ds = db.ExecuteQuery(sb.ToString());

            return ds;

        }

		public DataSet DropdownList()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
			sb.Append("SELECT ");
			sb.Append(" id_cadastro ");
				sb.Append(", cpf ");  				
				sb.Append(", registro_geral ");  				
				sb.Append(", orgao_emissor ");  				
			sb.Append(" FROM tb_cadastro_fisica ");           
			sb.Append(" ORDER BY cpf ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_CADASTRO_FISICA_DROPDOWNLIST");  
            return ds;
        }

        public DataSet DropdownList(String Where)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id_cadastro ");
			
			
			sb.Append(", cpf ");  				
			
			
			sb.Append(", registro_geral ");  				
			
			
			sb.Append(", orgao_emissor ");  				
			sb.Append(" FROM tb_cadastro_fisica ");
			sb.Append(string.Format(" WHERE {0} ",Where));
			sb.Append(" ORDER BY cpf ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_CADASTRO_FISICA_DROPDOWNLIST");
            return ds;
        }
		
		  public DataSet DropdownList(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id_cadastro ");
			sb.Append(", cpf ");  				
			sb.Append(", registro_geral ");  				
			sb.Append(", orgao_emissor ");  				
			sb.Append(" FROM tb_cadastro_fisica ");
			sb.Append(string.Format(" WHERE {0} ORDER BY {1}",Where,OrderBy));			
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_CADASTRO_FISICA_DROPDOWNLIST");
            return ds;
        }

	}
	#endregion
}

